// /pages/order-detail/order-detail.js

// 导入所需模块和我们创建的各类工具函数
const app = getApp();
import { formatFullDateTime, formatDurationInHoursAndMinutes,maskPhone } from '../../utils/formatters.js';

Page({
  /**
   * 页面的初始数据
   */
  data: {
    orderId: null,        // 从上个页面接收的 usage_record_id
    orderVM: null,        // 【核心】存储专门为WXML展示服务的“视图模型”对象
    isLoading: true,      // 控制加载状态
  },

  // ==========================================================
  // =                      生命周期函数                       =
  // ==========================================================
  
  async onLoad(options) {
    if (!options || !options.id) {
      console.error("加载详情页失败: 未传递订单ID (id)");
      this.setData({ isLoading: false });
      wx.showToast({ title: '参数错误', icon: 'error' });
      return;
    }
    
    this.setData({ orderId: options.id });
    
    // 【优化】使用登录守卫保护页面
    const isLoggedIn = await app.ensureLoggedIn();
    if (!isLoggedIn) return;

    // 获取并处理订单详情
    this.fetchAndProcessOrderDetail();
  },

  // ==========================================================
  // =                      核心业务流程                       =
  // ==========================================================
  
  /**
   * [核心流程] - 获取、处理并展示订单详情
   */
  async fetchAndProcessOrderDetail() {
    this.setData({ isLoading: true });
    wx.showLoading({ title: '加载中...' });

    try {
      // 1. [获取] - 使用全局 request 获取原始订单数据
      const rawOrderData = await app.request({
        url: `/api/app/orders/usage/${this.data.orderId}/details`,

      });

      // 2. [处理] - 将原始数据“翻译”成 WXML 需要的视图模型
      const orderViewModel = this._createViewModel(rawOrderData);

      // 3. [展示] - 将处理好的视图模型设置到页面数据中
      this.setData({ orderVM: orderViewModel });

    } catch (err) {
      console.error("加载订单详情失败:", err);
    } finally {
      wx.hideLoading();
      this.setData({ isLoading: false });
    }
  },

  /**
   * [辅助函数] - 创建视图模型 (View Model)
   * 负责将后端返回的原始数据，转换为WXML可直接渲染的、格式化好的对象
   * @param {object} order - 后端返回的原始订单数据
   * @returns {object} - 处理过的、可供WXML直接使用的视图模型对象
   */
  _createViewModel(order) {
    if (!order) return null;

    const baseUrl = app.globalData.config.baseUrl;
    const device = order.reservation.device;

    return {
      // 设备信息
      deviceName: device.name,
      deviceModel: device.model || 'N/A',
      deviceImageUrl: device.image_url ? baseUrl + device.image_url : '/static/images/default-placeholder.png',
      
      // 订单概览
      id: order.id,
      completedTime: formatFullDateTime(order.actual_end_time),
      duration: formatDurationInHoursAndMinutes(order.total_minutes_used),
      
      // 预约信息
      reserverName: order.reservation.contact_name,
      reserverPhone: maskPhone(order.reservation.contact_phone),
      
      // 实际使用信息
      actualUserName: order.actual_user_name,
      actualUserPhone: maskPhone(order.actual_user_phone),
      actualUserGroup: order.actual_user_group,
      remarks: order.remarks,
    };
  },
});